package com.example.utils;

import org.springframework.util.DigestUtils;
import org.springframework.util.StringUtils;

import java.util.UUID;

/**
 * Description:
 * User: 阿宾
 * Date: 2025-05-21
 * Time: 19:55
 */
public class SecurityUtils {

    /**
     * 对密码进行加密
     * @param Password  用户注册时输入的密码
     * @return 数据库中存储的信息:  盐值 + md5(明文+盐值)
     */
    public static String encrypt(String Password){
        //1.生成随机盐值
        String salt = UUID.randomUUID().toString().replace("-", "");
        //2.组合最终密码 盐值+原始密码，然后通过MD5加密
        String finalPassword = DigestUtils.md5DigestAsHex((Password + salt).getBytes());
        //3.返回到数据库中存储的密码
        return salt+finalPassword;

    }

    /**
     * 密码验证
     * @param inputPassword 用户登录时输入的密码
     * @param sqlPassword 数据库中password字段存储的信息   盐值 + md5(明文+盐值)
     * @return
     */
    public static boolean verify(String inputPassword,String sqlPassword){
        if(!StringUtils.hasLength(inputPassword)||!StringUtils.hasLength(sqlPassword)){
            return false;
        }
        //最终密码不是64位，则不正确
        if(sqlPassword.length() != 64){
            return false;
        }
        //从数据库中的存储的密码中获取盐值
        String salt = sqlPassword.substring(0, 32);
        //根据盐值和用户输入的密码，通过md5加密
        String finalPassword = DigestUtils.md5DigestAsHex((inputPassword + salt).getBytes());
        return (salt+finalPassword).equals(sqlPassword);
    }

}
